/**
 * 
 */
Ext.ns("examPositionManage");
examPositionManage.init = function() {
	var examPosition_map;
	var examPosition_marker;
	var examPosition_geocoder;
	examPositionManage.examPosition_Id;
	examPositionManage.sm = new Ext.grid.CheckboxSelectionModel({
		handleMouseDown : Ext.emptyFn
	});
	examPositionManage.cm = new Ext.grid.ColumnModel([
			new Ext.grid.RowNumberer(), examPositionManage.sm, {
				header : '考场名称',
				dataIndex : 'examPosition_Name',
				sortable : true,
				width : 50
			}, {
				header : '考场状态',
				dataIndex : 'examPosition_State',
				sortable : true,
				renderer : function(value, celmeta, record) {
					var a = record.data["examPosition_State"];
					if (a == 0) {
						return "停用";
					} else {
						return "开启";
					}
				},
				width : 40
			}, {
				header : '考场容纳人数',
				dataIndex : 'examPosition_PersonCount',
				sortable : true,
				width : 40
			}, {
				header : '考场地址介绍',
				dataIndex : 'examPosition_Comments',
				sortable : true
			} ]);

	examPositionManage.store = new Ext.data.JsonStore({
		url : 'conduction/showExamPosition',
		totalProperty : 'total',
		root : 'examPositions',
		baseParams : {
			limit : 12
		},
		fields : [ {
			name : "examPosition_Id",
			mapping : 'examPosition_Id',
			type : 'string'
		}, {
			name : "examPosition_Name",
			mapping : 'examPosition_Name',
			type : 'string'
		}, {
			name : "examPosition_Comments",
			mapping : 'examPosition_Comments',
			type : 'string'
		}, {
			name : "examPosition_State",
			mapping : 'examPosition_State',
			type : 'int'
		}, {
			name : "examPosition_PersonCount",
			mapping : 'examPosition_PersonCount',
			type : 'int'
		} ]
	});
	examPositionManage.Panel = new Ext.grid.GridPanel(
			{
				deferredRender : true,
				sm : examPositionManage.sm,
				cm : examPositionManage.cm,
				store : examPositionManage.store,
				loadMask : true,
				height : 450,
				viewConfig : {
					columnsText : '选择显示列',
					forceFit : true
				},
				tbar : new Ext.Toolbar(
						[
								'-',
								new Ext.ux.form.SearchField({
									emptyText : '请输入考场名称进行模糊查询',
									store : examPositionManage.store,
									width : 220
								}),
								'-',
								{
									text : '增加考场信息',
									handler : function() {
										if (examPositionManage.addWindow
												.isVisible()) {
											examPositionManage.addWindow.hide(
													this, function() {

													});
										} else {
											
										}
									}
								},
								'-',
								{
									text : '删除选中项',
									handler : function() {
										var rows = examPositionManage.Panel
												.getSelectionModel()
												.getSelections();
										if (rows.length < 1) {
											Ext.Msg.alert("提示", "请选择一个或多个选项！");
											return false;
										} else {
											var examPosition_Ids = []; // 要删除的id
											Ext
													.each(
															rows,
															function(item) {
																examPosition_Ids
																		.push(item.data.examPosition_Id);
															});
											Ext.Ajax
													.request({
														url : 'conduction/deleteExamPosition',
														method : 'post',
														params : {
															examPosition_Ids : examPosition_Ids
														},
														success : function(
																response) {
															var obj = Ext
																	.decode(response.responseText);
															if (obj.success == false) {
																Ext.Msg.alert(
																		"提示",
																		"删除失败");
															} else {
																Ext.Msg.alert(
																		"提示",
																		"删除成功");
															}
														},
														failure : function(
																response) {
														}
													});

										}
									}
								}, "-", {
									text : "显示所有考场信息",
									handler : function() {
										examPositionManage.store.load({
											params : {
												start : 0,
												limit : 12
											}
										});
									}
								}, "-", {
									text : "刷新页面",
									handler : function() {
										examPositionManage.store.load({
											params : {
												start : 0,
												limit : 12
											}
										});
									}
								} ]),
				bbar : new Ext.PagingToolbar({
					id : 'examPositionManage.pagetool',
					pageSize : 10,
					store : examPositionManage.store,
					displayInfo : true,
					displayMsg : '显示第 {0} 条到 {1} 条记录，一共 {2} 条',
					emptyMsg : "没有记录"
				}),
				listeners : {
					'rowdblclick' : function(grid, rowindex, event) {
						var record = grid.getStore().getAt(rowindex);
						examPositionManage.examPosition_Id = record
								.get("examPosition_Id");
						examPositionManage.editPanel.getForm().loadRecord(
								record);
						if (examPositionManage.editWindow.isVisible()) {
							examPositionManage.editWindow.hide(this,
									function() {
									});
						} else {
							examPositionManage.editWindow.show(this,
									function() {

									});
						}
					}
				}
			});
	examPositionManage.addPanel = new Ext.FormPanel(
			{
				region : 'center',
				id : 'examPosition_register',
				frame : true,
				labelAlign : 'left',
				closable : true,
				fileUpload : true,
				columnWidth : .55,
				height : 500,
				viewConfig : {
					forceFit : true
				},
				bodyStyle : {
					marginLeft : '10px',
					marginTop : '30px',
					padding : '10px'
				},
				items : [ {
					xtype : 'textfield',
					fieldLabel : '考场名称',
					allowBlank : false,
					blankText : '对不起，请填写考场名称！',
					emptyText : '请填写考场名称',
					msgTarget : 'side',
					minLength : 2,
					minLengthText : '请输入考场名称大于两个汉字',
					maxLength : 50,
					maxLengthText : '请输入考场名称小于五十个汉字',
					name : 'examPosition.examPosition_Name'
				}, {
					fieldLabel : '考场容纳人数',
					xtype : 'numberfield',
					allowNegative : false,
					msgTarget : 'side',
					allowDecimals : false,
					minValue : 20,
					maxValue : 60,
					minText : '对不起，每个考场至少20人',
					maxText : '对不起，每个考场最多60人，以方便监考',
					emptyText : '请填写人数',
					allowBlank : false,
					blankText : '对不起，人数不能为空',
					name : 'examPosition.examPosition_PersonCount'
				}, {
					fieldLabel : '考场状态',
					allowBlank : false,
					msgTarget : 'side',
					blankText : '对不起，请选择状态栏！',
					emptyText : '请选择',
					xtype : 'combo',
					mode : 'local',
					triggerAction : 'all',
					valueField : 'text',
					displayField : 'value',
					store : new Ext.data.SimpleStore({
						fields : [ 'value', 'text' ],
						data : [ [ '开启', 1 ], [ '停用', 0 ] ]
					}),
					name : 'state'
				}, {
					fieldLabel : '考场地址介绍',
					allowBlank : false,
					msgTarget : 'side',
					blankText : '对不起，考场地址介绍不能为空！',
					emptyText : '请填写考场地址介绍',
					xtype : 'htmleditor',
					defaultValue : "没有描述",
					name : 'examPosition.examPosition_Comments'
				}, {
					id : 'position_key',
					xtype : 'textfield',
					allowBlank : false,
					fieldLabel : '考场建筑物定位关键字',
					blankText : '对不起，商家地址不能为空！',
					msgTarget : 'side',
					width : 400
				} ],
				buttonAlign : 'center',
				buttons : [
						{
							text : '提交',
							handler : function() {
								if (examPositionManage.addPanel.getForm()
										.isValid()) {
									var route;
									var city;
									var region;
									var address;
									var pos = examPosition_marker.getPosition();
									examPosition_geocoder
											.geocode(
													{
														'latLng' : pos
													},
													function(results, status) {
														if (status == google.maps.GeocoderStatus.OK) {
															if (results[1]) {
																address = results[1].formatted_address;
																for ( var i = 0; i < eval(results[0].address_components).length; i++) {
																	var types = results[0].address_components[i].types;
																	for ( var j = 0; j < eval(types).length; j++) {
																		if (types[0] == "route") {
																			route = results[0].address_components[i].long_name;
																		} else if (types[0] == "locality") {
																			city = results[0].address_components[i].long_name;
																		} else if (types[0] == "sublocality") {
																			region = results[0].address_components[i].long_name;
																		}
																	}
																}
																var lat = pos
																		.lat();
																var lng = pos
																		.lng();
																examPositionManage.addPanel
																		.getForm()
																		.submit(
																				{
																					url : "conduction/addExamPosition",
																					params : {
																						'examPosition.examPosition_Place.place_H' : lat,
																						'examPosition.examPosition_Place.place_V' : lng,
																						'examPosition.examPosition_Place.place_City' : city,
																						'examPosition.examPosition_Place.place_Region' : region,
																						'examPosition.examPosition_Place.place_Route' : route,
																						'examPosition.examPosition_Place.place_Address' : address
																					},
																					method : 'post',
																					waitMsg : '请稍等,正在定位和增加相关信息！',
																					waitTitle : '提示',
																					success : function(
																							form,
																							action) {
																						Ext.Msg
																								.alert(
																										'提示',
																										action.result.msg);
																						examPositionManage.addPanel
																								.getForm()
																								.reset();
																						if (action.result.success == true) {
																							examPositionManage.addWindow
																									.close();
																						}
																					},
																					failure : function(
																							form,
																							action) {
																						Ext.Msg
																								.alert(
																										'提示',
																										action.result.msg);
																					}
																				});
															} else {
															}
														} else {
															alert("对不起，你输入的信息不正确，以至于无法导航！ ");
														}
													});
								}
							}
						}, {
							text : '重置',
							handler : function() {
								examPositionManage.addPanel.getForm().reset();
							}
						} ]
			});
	var examPosition_google = new Ext.Panel({
		columnWidth : .45,
		viewConfig : {
			forceFit : true
		},
		autoWidth : true,
		autoHeight : true,
		loadMask : true,
		frame : true,
		id : 'storemapPanel',
		border : false,
		html : '<div id="mapDiv"  style="width:520px;height:520px;"></div>'
	});

	examPositionManage.addWindow = new Ext.Window({
		region : "center",
		title : '增加考场信息窗口',
		id : "storePanel",
		loadMask : true,
		width : 1200,
		autoHeight : true,
		deferredRender : true,
		modal : true,
		progress : true,
		closeAction : 'hide',
		animateTarget : 'target',
		draggable : false,
		resizable : false,
		layout : 'column',
		viewConfig : {
			forceFit : true
		},
		items : [ examPositionManage.addPanel, examPosition_google ]
	});
	examPositionManage.editPanel = new Ext.FormPanel(
			{
				defaultType : 'textfield',
				width : 700,
				labelAlign : 'center',
				msgTarget : 'side',
				fileUpload : true,
				constrain : true,
				constrainHeader : true,
				bodyStyle : {
					padding : '20px'
				},
				viewConfig : {
					forceFit : true
				},
				items : [ {
					id : 'examPosition_Name',
					fieldLabel : '考场名称',
					allowBlank : false,
					xtype : 'displayfield'
				}, {
					id : 'examPosition_PersonCount',
					fieldLabel : '考场可容人数',
					xtype : 'numberfield',
					allowNegative : false,
					msgTarget : 'side',
					allowDecimals : false,
					minValue : 20,
					maxValue : 60,
					minText : '对不起，每个考场至少20人',
					maxText : '对不起，每个考场最多60人，以方便监考',
					emptyText : '请填写人数',
					allowBlank : false,
					blankText : '对不起，人数不能为空',
					name : 'examPosition.examPosition_PersonCount'
				}, {
					id : 'examPosition_State',
					fieldLabel : '考场状态',
					allowBlank : false,
					blankText : '对不起，请选择状态栏！',
					emptyText : '请选择',
					xtype : 'combo',
					mode : 'local',
					triggerAction : 'all',
					valueField : 'text',
					displayField : 'value',
					store : new Ext.data.SimpleStore({
						fields : [ 'value', 'text' ],
						data : [ [ '开启', 1 ], [ '封闭', 0 ] ]
					}),
					name : 'state'
				}, {
					id : 'examPosition_Comments',
					fieldLabel : '考场地址介绍',
					blankText : '对不起，考场地址介绍不能为空！',
					emptyText : '请填写考场地址介绍',
					xtype : 'htmleditor',
					defaultValue : "没有描述",
					name : 'examPosition.examPosition_Comments'
				} ],
				buttonAlign : 'center',
				buttons : [
						{
							text : '修改',
							handler : function() {
								if (examPositionManage.editPanel.getForm()
										.isValid()) {
									examPositionManage.editPanel
											.getForm()
											.submit(
													{
														url : 'conduction/editExamPosition.action',
														method : 'post',
														params : {
															'examPosition.examPosition_Id' : examPositionManage.examPosition_Id
														},
														success : function(
																form, action) {
															Ext.Msg.alert('提示',
																	"修改成功");
															examPositionManage.editWindow
																	.hide();
														},
														failure : function(
																form, action) {
															Ext.Msg.alert('提示',
																	"修改失败！！！！");
														}
													});
								}
							}
						},

						{
							text : '退出',
							handler : function() {
								examPositionManage.editWindow.hide();
							}

						} ]
			});
	examPositionManage.Main = new Ext.Panel({
		title : '考场信息管理',
		id : 'examPositionManagerPanel',
		frame : true,
		deferredRender : true,
		closeAction : 'hide',
		cm : examPositionManage.cm,
		store : examPositionManage.store,
		loadMask : true,
		autoWidth : true,
		closable : true,
		layout : 'fit',
		viewConfig : {
			forceFit : true
		},
		items : [ examPositionManage.Panel ]
	});
	examPositionManage.editWindow = new Ext.Window({
		title : '修改考场信息窗口',
		region : 'center',
		width : 700,
		autoHeight : true,
		modal : true,
		resizable : false,
		draggable : true,
		closeAction : 'hide',
		animateTarget : 'target',
		items : [ examPositionManage.editPanel ]
	});
	Ext.getCmp("position_key").on("blur", function() {
		examPosition_geocoder = new google.maps.Geocoder();
		var trafficLayer = new google.maps.TrafficLayer();
		var address = Ext.getCmp("position_key").getEl().dom.value;
		if (examPosition_geocoder) {
			examPosition_geocoder.geocode({
				'address' : address
			}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					var location = results[0].geometry.location;
					examPosition_marker.setTitle(address);
					examPosition_map.setCenter(location);
					examPosition_marker.setPosition(location);
					examPosition_map.setZoom(18);
					trafficLayer.setMap(examPosition_map);
				} else {
					alert("对不起，导航出现错误: " + status);
				}
			});
		}

	});
};
Ext.onReady(examPositionManage.init);